package xim

import (
	"gitee.com/xiaoyutab/xgotool/optional/xlog"
	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 获取群成员列表
//
//	id		群ID
//	offset	跳过条数
//	limit	查询条数(-1表示查询全部)
func GetChatUser(id uint64, offset, limit int) (int64, []ChatUser, error) {
	// 获取群信息
	chat_info, err := GetChat(id)
	if err != nil {
		return 0, nil, err
	}
	if limit == 0 || limit < -1 {
		return 0, nil, xerror.New("查询条数参数传输错误")
	}
	// 连接数据库进行查询
	if _default.DB == nil {
		return 0, nil, xerror.New("数据库未连接")
	}
	db := _default.DB.Table(_default.ChatUserTable).
		Where("chat_id", chat_info.Id).
		Where("is_deleted", 0).
		Order("`is_management` DESC,`is_book` DESC,`id` ASC")
	var count int64
	err = db.Count(&count).Error
	if err != nil {
		return 0, nil, xlog.AE("群成员条数查询失败", err)
	}
	lis := []ChatUser{}
	if limit > 0 {
		err = db.Offset(offset).Limit(limit).Find(&lis).Error
	} else if limit == -1 {
		err = db.Find(&lis).Error
	}
	if err != nil {
		return 0, nil, xlog.AE("群成员列表查询失败", err)
	}
	// 清除群备注信息
	for i := 0; i < len(lis); i++ {
		lis[i].Desc = ""
	}
	return count, lis, nil
}
